/*
 * MuxerFileMediaSink.h
 *
 *  Created on: 2020年8月11日
 *      Author: chuan
 */

#ifndef MUXERFILEMEDIASINK_H_
#define MUXERFILEMEDIASINK_H_

#include "UFileMediaSink.h"
#include "UMediaMuxer.h"

class MuxerFileMediaSinkPrivate;

class DLLEXPORT MuxerFileMediaSink: public UFileMediaSink
{
public:
    explicit MuxerFileMediaSink(UMediaMuxer* muxer = nullptr);
    virtual ~MuxerFileMediaSink();

    virtual bool open(const char* filepath);
    virtual void close();
    virtual bool isOpen();

	virtual bool setFile(const char* filename);

    virtual const char* getFile();


    virtual void onMediaFormat(const UMediaFormat& fmt);

    virtual void onMediaPacket(UMediaPacket& pkt);

    virtual void onMediaEvent(int event);


    void setMuxer(UMediaMuxer* muxer);

protected:
    void onMuxer(UMediaPacket& pkt);

protected:
    UMediaMuxer*    m_muxer;
    MuxerFileMediaSinkPrivate*  m_pimpl;

};

#endif /* MUXERFILEMEDIASINK_H_ */
